home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 8
/
Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso
/
Aminet
/
util
/
boot
/
TheChoice.lha
/
TheChoice
/
TheChoice.mod
< prev
next >
Wrap
Text File
|
1995-07-28
|
6KB
|
180 lines
MODULE TheChoice;
(* Version : 1.05 *)
(* Author : Carsten Wich *)
FROM SYSTEM IMPORT ADR, ADDRESS, TAG;
IMPORT art:Arts,
dd:DosD,
dl:DosL,
el:ExecL,
gtd:GadToolsD,
gtl:GadToolsL,
gd:GraphicsD,
id:IntuitionD,
il:IntuitionL,
io:InOut,
st:String,
ud:UtilityD;
VAR
ScrPtr : id.ScreenPtr;
ScrMode : LONGINT;
ScrHght,
MaxRow,
MaxCol,
Left,
Space : CARDINAL;
WinPtr : id.WindowPtr;
tagBuffer : ARRAY[0..20] OF LONGINT;
SelectTxt : id.IntuiText;
Datei : dd.FileHandlePtr;
TAttr : gd.TextAttr;
VInfo : ADDRESS;
NewGad : gtd.NewGadget;
Gad : ARRAY[0..102] OF id.GadgetPtr;
Name : ARRAY[1..102] OF ARRAY[0..25] OF CHAR;
Script : ARRAY[1..102] OF ARRAY[0..40] OF CHAR;
PGad : id.GadgetPtr;
i,j,
Max,
GadNr : CARDINAL;
Msg : id.IntuiMessagePtr;
Suc : LONGINT;
Buffer : POINTER TO ARRAY[0..40] OF CHAR;
ExeStr : ARRAY[0..68] OF CHAR;
Cancel,
End : BOOLEAN;
BEGIN
ExeStr := 'Execute ';
End := FALSE;
Datei := dl.Open(ADR('S:TheChoice.config'),dd.oldFile);
Max := 0;
REPEAT
Buffer := dl.FGets(Datei,ADR(Name[Max+1]),26);
IF Buffer#NIL THEN
st.DeleteChar(Name[Max+1],st.Length(Name[Max+1])-1);
Buffer := dl.FGets(Datei,ADR(Script[Max+1]),41);
IF Buffer#NIL THEN
st.DeleteChar(Script[Max+1],st.Length(Script[Max+1])-1);
INC(Max)
END
END
UNTIL (Max>=102) OR (Buffer=NIL);
dl.Close(Datei);
IF Max>0 THEN
IF Max>48 THEN
ScrMode := gd.hireslaceKey;
ScrHght := 512;
MaxRow := 34;
CASE Max OF
69..102 : MaxCol := 3;
Left := 6;
Space := 2 |
35..68 : MaxCol := 2;
Left := 74;
Space := 75 |
1..34 : MaxCol := 1;
Left := 216;
Space := 0 |
ELSE
END;
ELSE
ScrMode := gd.hiresKey;
ScrHght := 256;
MaxRow := 16;
CASE Max OF
33..48 : MaxCol := 3;
Left := 6;
Space := 2 |
17..32 : MaxCol := 2;
Left := 74;
Space := 75 |
1..16 : MaxCol := 1;
Left := 216;
Space := 0 |
ELSE
END;
END;
TAttr.name := ADR('topaz.font');
TAttr.ySize := 8;
TAttr.flags := gd.FontFlagSet{gd.romFont};
ScrPtr := il.OpenScreenTagList(NIL,TAG(tagBuffer,
id.saWidth,640,
id.saHeight,ScrHght,
id.saDepth,2,
id.saFont,ADR(TAttr),
id.saDisplayID,ScrMode,
id.saTitle,ADR('TheChoice V1.05 - Copyright 1993-95 by Carsten Wich'),
id.saPens,ADR(CARDINAL{0FFFFH}),
ud.tagDone));
art.Assert(ScrPtr#NIL,ADR('Can not open Screen !!!'));
VInfo := gtl.GetVisualInfoA(ScrPtr,TAG(tagBuffer,ud.tagDone));
Gad[0] := NIL;
art.Assert(gtl.CreateContext(Gad[0])#NIL,ADR('Can not create Gadgets !!!'));
NewGad.width := 208;
NewGad.height := 12;
NewGad.flags := gtd.NewGadgetFlagSet{gtd.placetextIn};
NewGad.visualInfo := VInfo;
NewGad.textAttr := ScrPtr^.font;
FOR i:=0 TO MaxCol-1 DO
FOR j:=0 TO MaxRow-1 DO
IF Max>=(1+i*MaxRow+j) THEN
NewGad.leftEdge := Left+i*(208+Space);
NewGad.topEdge := 14+j*14;
NewGad.gadgetText := ADR(Name[1+i*MaxRow+j]);
NewGad.gadgetID := 1+i*MaxRow+j;
Gad[1+i*MaxRow+j] := gtl.CreateGadgetA(gtd.buttonKind,Gad[i*MaxRow+j]^,NewGad,TAG(tagBuffer,
ud.tagDone));
END
END
END;
WinPtr := il.OpenWindowTagList(NIL,TAG(tagBuffer,
id.waLeft,0,
id.waTop,0,
id.waWidth,640,
id.waHeight,ScrHght,
id.waTitle,ADR('TheChoice V1.05 - Copyright 1993-95 by Carsten Wich'),
id.waCustomScreen,ScrPtr,
id.waIDCMP,id.IDCMPFlagSet{id.gadgetUp,
id.closeWindow,
id.vanillaKey},
id.waCloseGadget, TRUE,
id.waActivate,TRUE,
id.waGadgets,Gad[0],
ud.tagDone));
art.Assert(ScrPtr#NIL,ADR('Can not open Window !!!'));
SelectTxt.frontPen := 2;
SelectTxt.backPen := 0;
SelectTxt.drawMode := gd.DrawModeSet{gd.dm0};
SelectTxt.leftEdge := 0;
SelectTxt.topEdge := 0;
SelectTxt.iTextFont := ScrPtr^.font;
SelectTxt.iText := ADR('Select one of the above Programs to be executed');
il.PrintIText(WinPtr^.rPort,ADR(SelectTxt),132,ScrHght-14);
REPEAT
el.WaitPort(WinPtr^.userPort);
Msg := el.GetMsg(WinPtr^.userPort);
IF Msg^.class = id.IDCMPFlagSet{id.gadgetUp} THEN
PGad := Msg^.iAddress;
GadNr := PGad^.gadgetID;
End := TRUE;
ELSIF Msg^.class = id.IDCMPFlagSet{id.closeWindow} THEN
Cancel := TRUE
END;
el.ReplyMsg(Msg);
UNTIL End OR Cancel;
il.CloseWindow(WinPtr);
gtl.FreeGadgets(Gad[0]);
gtl.FreeVisualInfo(VInfo);
il.CloseScreen(ScrPtr);
IF NOT Cancel THEN
st.Concat(ExeStr, Script[GadNr]);
Suc := dl.Execute(ADR(ExeStr),NIL,NIL)
END
ELSE
io.WriteString('Bad or missing config file !!!');
io.WriteLn;
END;
END TheChoice.